Applications, network services, and others may cause system slowdowns and other problems during operation. If such a problem occurs, a system administrator conducts an analysis to find what has caused a delay or an abnormality. For example, to find what has caused a delay, a large number of monitoring points are set in a program that executes a target application or network service, and a large amount of log is collected at the monitoring points. The administrator detects the times taken for processing between the monitoring points, on the basis of timestamps written to the log collected at the monitoring points, and identifies what has caused the delay. Similarly, for example, the administrator may be able to detect a point that is in an unexpected execution state as an abnormal point, on the basis of the collected log. Note that, to narrow down or identify what has caused a delay or another, it is preferable that a large amount of log be collected at a large number of monitoring points. Therefore, a high execution overhead and network load may be caused in a system under operation.
For example, there is an analysis apparatus that analyzes a program before operation, and when an application receives a request, generates path information indicating components used by the application. The path here is a collection of components that are used by the application in response to the request. In the pre-analysis, the analysis apparatus makes a setting for collecting a detailed log at a large number of monitoring points, sends all request patterns expected for the system or the like, and obtains detailed log information. The analysis apparatus then generates path information on the basis of the obtained detailed log information, for use in detection of a problematic portion of the application in later operation.
Please see, for example, Japanese Laid-open Patent Publication Nos. 2007-241426, 2013-92977, and 2014-132421.
However, it takes a great time to execute a program using all request patterns expected by a system test or the like and collect their detailed log information.
A program to be analyzed may be one generated by partly modifying an existing program. However, it is not easy to detect how much the modification, even if it is a partial modification, has an influence on paths, by conducting an analysis of source code, i.e., a static analysis. With regard to a program in which it is dynamically determined what are called by components, it is not possible to detect a caller-callee relationship between components without actually executing the program. There is a case where a modified component may use an existing component. Therefore, in the analysis of the program, the program is executed using all expected request patterns, and a detailed log is collected. For this reason, even for a program generated by slightly modifying an existing program, it is not easy to reduce the processing time for the analysis.